using System;
using System.Reflection;

namespace PrismNavigationFramework.MVVM
{
    public interface IViewRegistrationService
    {
        void RegisterViewsAndTheirViewModels();

        void RegisterViewAndViewModel(Type viewInterfaceType, Type viewType, Type viewModelType);
        void RegisterViewAndViewModel(Type viewType, Type viewModelType);
        void RegisterViewAndViewModel(Type viewType, Type viewModelType, string viewUrl);
        void RegisterViewAndViewModel<TViewType, TViewModelType>();
        void RegisterViewAndViewModel<TViewType, TViewModelType>(string viewUrl);
        void RegisterViewAndViewModel<TViewInterfaceType, TViewType, TViewModelType>();
        void RegisterViewAndViewModel(Type viewInterfaceType, Type viewType, Type viewModelType, string viewUrl);
        void RegisterViewAndViewModel<TViewInterfaceType, TViewType, TViewModelType>(string viewUrl);
    }
}